package com.runcode.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * description: 模拟日志拦截器 
 * @version v1.0
 * @author w
 * @date 2019年12月27日下午3:38:34
 **/

public class LogInterceptor implements HandlerInterceptor {
	
	/**
	 * preHandle: Controller 执行之前，调用该方法
	 * 返回 true,表示继续执行 ； 返回 false ，终止执行。
	 * 应用： 登陆校验、权限拦截 等。
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("LogInterceptor =====> preHandle ");
		return true;
	}
	
	/**
	 * postHandle: Controller 执行之后，但未返回视图前，调用此方法。
	 * 应用：对模型数据进行加工处理，加入公用信息以便页面显示 ； 或者手机、平板等移动端访问，返回对应页面数据。
	 */
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView view)
			throws Exception {
		System.out.println("LogInterceptor =====> postHandle ");
		if(null != view) {
			System.out.println("viewName： "+view.getViewName());
		}
		
	}
	
	/**
	 * afterCompletion: Controller 执行之后，且返回视图后，调用此方法。
	 * 应用：日志记录、异常记录、资源清理等。
	 */
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("LogInterceptor =====> afterCompletion ");
		
	}

	

}
